package com.ytjj.qmyx.admin.service;

import com.ytjj.common.api.CommonPage;
import com.ytjj.common.api.CommonResult;
import com.ytjj.qmyx.admin.model.CategoryNow;
import com.ytjj.qmyx.admin.model.YxProduct;
import com.ytjj.qmyx.admin.model.request.*;
import com.ytjj.qmyx.admin.model.response.*;
import com.ytjj.qmyx.mall.model.*;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public interface ProductService {

    CommonPage<ProductModelResponse> selectList(ProductRequest productRequest);

    CommonPage<ProductModelResponse> selectListV2(ProductRequest productRequest);

    CommonPage<ProductModelResponse> downloadList(ProductRequest productRequest);

    List<Product> getListByBankerId(Integer bankerId);

    Product productInfosById(Integer id);

    int create(AddProductRequest addProductRequest);

    int update(EditProductRequest editProductRequest);

    Map<String,Object> selectSkuKeysbyId(Integer id);

    int updateStatus(Integer id, Byte status, String downRemark);

    int delete(Integer id);

    int addActivity(ProductActivityRequest productActivity);

    List<ActivityColumn> getColumnByType(String type);

    CommonPage<ProductSpecial> getProductSpecial(ProductSpecialRequest productSpecialRequest);

    CommonPage<ProductSpec>  getProductSpec(ProductSpecRequest ProductSpecRequest);

    Integer updateProductSpecImg(ProductSpecRequest productSpecRequest);

    int updateProductSpec(ProductSpec productSpec);

    CommonPage<ProductImg> getProductImgs(ProductImgRequest productImgRequest);

    ProductMatching getProductMatching(Integer productId);

    int updateProductMatching(ProductMatching productMatching);

    int updateStockBatch(Integer stock);

    int updatePriceStock(Integer productId, BigDecimal price, Integer stock, BigDecimal curPrice);

    int updateStock(Integer productId, Integer stockSum);

    int isHomeFlag(Integer id, Integer homeFlag);

    CommonPage<ProductStatisticsResponse> queryProductStatistics(ProductStatisticsRequest productStatisticsRequest);

    List<ProductStatisticsResponse> exportOrdersExcel(ProductStatisticsRequest request);

    Integer easyShuttle(EasyShuttleRequest easyShuttleRequest);

    CommonPage<StockRemindResponse> getStockInfo(StockRemindRequest stockRemindRequest);

    Integer syncSpecInfo();

    Integer syncEvaluationProduct(EvaluationProductRequeset evaluationProduct);

    List<BankerColumn> getColumnList();

    List<NewProductResponse> getSmallProductList(NewProductRequest newProductRequest);

    List<Product> getProductNotInSubject(NewProductRequest newProductRequest);

    void updateProductActivityType(NewProductRequest newProductRequest);

    /**
     * 设置地区商品的活动栏目
     */
    void updateProductActivityTypeForProvince(NewProductRequest newProductRequest);

    void updateProduct(UpdateProductRequest updateProductRequest);

    void removeActivityProduct(Integer id);

    void deleteProductSpec(Integer id);

    CommonPage<ProductLifeResponse> getProductLifeByType(ProductLifeRequest productLifeRequest);

    Integer addProductLife(ForumAddRequest forumAddRequest);

    List<ForumProductResponse> getAllForumProductInfo();

    List<BankerSiteForumResponse> getBrandList(String bankerName);

    void addBrand(Integer bankerId);

    void updateSort(Integer id, Integer sort);

    void removeBrand(Integer id);

    List<BankerSiteForumResponse> getBrandUpList(String bankerName, Integer pageSize, Integer pageNum);

    CommonResult returnBackProduct(Integer id, String message);

    CommonResult removeSupplychianProduct(Integer id, String message);

    Integer seckillDate(Integer[] ids, String extra);

    List<ProductCategory> getTopCategoryList();

    /**
    * 从外部导入的分类now表查询
    * @param :
    * @returns: java.util.List<com.ytjj.qmyx.admin.model.CategoryNow>
    * 
    */
    List<CategoryNow> getTopCategoryListV2();

    List<ProductCategory> getChildCategoryList(Integer pid);

    Integer updateProductParam(ProductParamRequest productParamRequest);

    String buyerList();

    String assistantList();

    CommonPage<LifeHomeFlagResponse> getLifeHomeFlagList(LifeHomeFlagRequest lifeHomeFlagRequest);

    List<HomeFlagResponse> chooseHomeFlag(String platformType, String productName);

    void homeFlagTrue(Integer id);

    void homeFlagFalse(Integer id);

    CommonResult updateProductStatusByBankerId(Integer bankerId, Integer status);

    CommonResult updateProductStatusByBrandId(Integer brandId, Integer status);

    String newUpdateProductStatusByBrandId(BankerUpdatePutOnRequest request);

    List<Product> getListByBankerProductIds(List<Integer> bankerProductList);

    Integer judgeStatus(Integer productId);

    CommonResult updateImgToTable();

    void copyProduct(String platform);

    int importProductReviews(List<ImportProductReviewsRequest> collect);

    List<ProductReviews> getProductReviews(List<Integer> productIds);

    YxProduct getSupplyProduct(Integer supplyProductId);
}
